﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;

namespace ECommerce.DAO.SQL
{
    public static class Busqueda
    {
        public static ECommerce.Model.Productos.Producto[] Buscar(out int CantidadDeResultados, int NroPagina, int ResultadosXPagina, ECommerce.Model.Busqueda.Filtros Filtros,string clave)
        {
            List<ECommerce.Model.Productos.Producto> result = new List<ECommerce.Model.Productos.Producto>();
            ECommerce.Model.Productos.Producto Producto = new ECommerce.Model.Productos.Producto();
            CantidadDeResultados = 0;
            DataTable dt = new DataTable();
            using (SqlConnection sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["Repuestos"].ConnectionString))
            {
                using (SqlCommand sqlComm = new SqlCommand("[Búsqueda]"))
                {
                    sqlComm.CommandType = CommandType.StoredProcedure;
                    //SqlParameter param0 = new SqlParameter();
                    //param0.SqlDbType = SqlDbType.BigInt;
                    //param0.Value = NroPagina;
                    //param0.ParameterName = "@NroPagina";
                    //sqlComm.Parameters.Add(param0);
                    //SqlParameter param1 = new SqlParameter();
                    //param1.SqlDbType = SqlDbType.BigInt;
                    //param1.Value = ResultadosXPagina;
                    //param1.ParameterName = "@ResultadosXPagina";
                    //sqlComm.Parameters.Add(param1);
                    //SqlParameter param2 = new SqlParameter();
                    //param2.SqlDbType = SqlDbType.BigInt;
                    //param2.Direction = ParameterDirection.Output;
                    //param2.ParameterName = "@CantidadDeResultados";
                    //sqlComm.Parameters.Add(param2);
                    SqlParameter param3 = new SqlParameter();
                    param3.SqlDbType = SqlDbType.BigInt;
                    param3.Value = clave;
                    param3.ParameterName = "@clave";
                    sqlComm.Parameters.Add(param3); if (Filtros != null)
                    {
                        //SqlParameter param2 = new SqlParameter();
                        //param2.SqlDbType = SqlDbType.BigInt;
                        //param2.Value = NroPagina;
                        //param2.ParameterName = "@NroPagina";
                        //sqlComm.Parameters.Add(param2);
                    }

                    sqlComm.Connection = sqlConn;
                    sqlConn.Open();
                    using (SqlDataReader dr = sqlComm.ExecuteReader())
                    {
                        dt.Load(dr);
                    }
                    CantidadDeResultados = 10;// (int)param2.Value;
                    foreach (DataRow dr in dt.Rows)
                    {
                        Producto = new ECommerce.Model.Productos.Producto();
                        Producto.Load(dr);
                        result.Add(Producto);
                    }
                    sqlConn.Close();
                }
            }
            return result.ToArray();            
        }
        public static ECommerce.Model.Productos.Producto[] Buscar(string clave)
        {
            List<ECommerce.Model.Productos.Producto> result = new List<ECommerce.Model.Productos.Producto>();
            ECommerce.Model.Productos.Producto Producto = new ECommerce.Model.Productos.Producto();
            DataTable dt = new DataTable();
            using (SqlConnection sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["Repuestos"].ConnectionString))
            {
                using (SqlCommand sqlComm = new SqlCommand("[Búsqueda]"))
                {
                    sqlComm.CommandType = CommandType.StoredProcedure;
                    SqlParameter param3 = new SqlParameter();
                    param3.SqlDbType = SqlDbType.NVarChar;
                    param3.Value = clave;
                    param3.ParameterName = "@clave";
                    sqlComm.Parameters.Add(param3);
                    sqlComm.Connection = sqlConn;
                    sqlConn.Open();
                    try
                    {
                        using (SqlDataReader dr = sqlComm.ExecuteReader())
                        {
                            dt.Load(dr);
                        }
                        foreach (DataRow dr in dt.Rows)
                        {
                            Producto = new ECommerce.Model.Productos.Producto();
                            Producto.Load(dr);
                            result.Add(Producto);
                        }
                    }
                    catch (Exception ex)
                    {
                        sqlConn.Close();
                    }
                    finally
                    {
                        sqlConn.Close();
                    }
                }
            }
            return result.ToArray();
        }
    }
}
